package cn.bird.storm.validated.paramcheck;

import cn.bird.storm.validated.paramcheck.model.CheckEnums;
import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface CheckAnnotation {

    @AliasFor("value")
    String fieldName() default "";

    @AliasFor("fieldName")
    String value() default "";
    /**
     * 1、至少一个不为空的分组信息
     */
    String group() default "";
    /**
     * 分组
     * 此字段为空的--所有校验都会生效
     * 指定了分组的，只有该组的校验才会生效
     * 可以指定多个分组
     */
    String[] organizes() default {};
    /**
     * 字符串校验范围
     */
    String[] stringScope() default {};
    /**
     * 执行操作的方法
     */
    CheckEnums checkType();
    /**
     * 预留字段
     * 1、用来自定义校验的 key
     */
    String reserve1() default "";
}
